import cv2
import numpy as np

img = cv2.imread("../images/cat.jpg")

h, w, _ = img.shape

# 1. 转为灰度图
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 2. 创建和原图同等大小的全0图像，用于存储浮雕效果图
img_FuDiao = np.zeros_like(img_gray, dtype="u1")

# 3. 通过两层嵌套循环遍历图像的每个像素点（除了最后一列），
# 计算当前像素点与其右侧隔一个像素点的灰度值之差，并加上150以增强立体感。
for i in range(h):
    for j in range(w-2):
        p0 = int(img_gray[i, j])
        p2 = int(img_gray[i, j+2])
        newP = p0 - p2 + 150
        # 计算得到的差值被限制在0到255的范围内
        if newP < 0:
            newP = 0
        if newP > 255:
            newP = 255
        # 新计算的像素值赋给img_Fudiao的对应位置
        img_FuDiao[i, j] = newP

# 4. 显示结果
cv2.imshow('original image', img)
cv2.imshow("FuDiao image", img_FuDiao)
cv2.waitKey(0)